package org.dromara.bean.constant;


import org.dromara.common.core.utils.StringUtils;

/**
 * 返回结果同一定义
 *
 * @author Administrator
 */
public enum ReturnConstantEnum {
    /**
     * 公共信息提示
     */
    RETURN_UNKNOWN(10000, "未知错误，请联系开发人员", false),
    RETURN_JSON_ERROR(10001, "json数据格式错误", false),
    RETURN_EXCEPTION_NULL(10002, "参数值错误：", false),
    RETURN_ID_NULL(10003, "ID不能为空", false),
    RETURN_INFO_NOT_EXIST(10004, "该信息不存在", false),

    /**
     * token错误返回定义
     */
    TOKEN_NON_EXISTENT(11111, "token错误：未获取到token，重新登录", false),
    TOKEN_CHECK_FAIL(11112, "token错误：token验证失败", false),


    /**
     * 用户统一返回定义
     */
    MEMBER_INFO_NULL(12000, "用户管理：未找到用户信息", false),
    MEMBER_UPDATE_FAIL(12001, "用户编辑失败", false),
    USER_TYPE_ERROR(11113, "用户管理：用户类型获取失败", false),
    MEMBER_TEAM_NULL(11114, "用户管理：我的团队信息空", false),
    USER_INFO_ERROR(11115, "修改密码：电话号码不正确（和当前用户绑定的不一致）", false),
    USER_PASSWORD_ERROR(11116, "修改密码：修改密码失败", false),
    USER_PASSWORD_TOKEN_NULL(11117, "修改密码：TOKEN获取失败，用户未登录", false),
    USER_ID_ERROR(11118, "钱包管理：参数id不等于当前登录用户id", false),


    /**
     * 老板员工统一返回定义
     */
    STORE_USER_NULL(13000, "老板员工未找到对应信息", false),
    RESET_PASSWORD_FAIL(13001, "我的员工密码修改失败", false),
    USER_UPDATE_FAIL(13002, "我的员工修改失败", false),
    USER_CONTRACT_NULL(13003, "老板签约信息不存在", false),
    USER_OPENID_NULL(13004, "签约：商家信息不存在", false),
    USER_STORE_NULL(13005, "老板员工：商家信息和商铺关联不存在", false),
    USER_STORE_ADD_ERROR(13006, "老板员工添加失败", false),
    USER_STORE_DELETE_ERROR(13007, "老板员工删除失败", false),

    /**
     * 登录错误返回定义
     */
    LOGIN_PASSWORD_ERROR(14001, "登录密码错误", false),
    LOGIN_USER_TYPE_NULL(14002, "登录用户类型错误", false),
    LOGIN_USER_TYPE_ERROR(14003, "登录：用户类型错误", false),
    LOGIN_USER_SIGN_ERROR(14004, "登录用户签名失效", false),
    LOGIN_JSON_ERROR(14005, "json解析错误", false),
    LOGOUT_ERROR(14006, "注销失败", false),

    /**
     * 手机号绑定，修改
     */
    PHONE_UPDATE_ERROR(15000, "手机号：手机号修改失败!", false),
    PHONE_NULL(15000, "手机号：手机号不能为空!", false),
    PHONE_CODE_NULL(15001, "手机号：手机号或者验证码不能为空!", false),
    USER_PHONE_NULL(15002, "手机号：用户未绑定此手机号!", false),

    /**
     * 短信验证码返回定义
     */
    SMS_SUCCESS(16000, "手机验证码发送成功", true),
    SMS_CAPtCHA(16001, "验证码：验证码10分钟内，仍然有效！", false),
    SMS_EXIST(16002, "验证码：该手机号已经使用!", false),
    SMS_TYPE_ERROR(16003, "验证码：您的验证模式错误!(0.注册绑定，1.登录验证，2.修改密码，3.换手机号)", false),
    SMS_REFUSE(16004, "验证码：短信验证码发送失败,请稍后重试", false),
    SMS_NOT_RESOURCE(16005, "验证码：短信接口未配置，请联系管理员！", false),
    SMS_USER_TYPE_ERROR(16006, "验证码：用户类型错误(0.普通用户，1.老板员工)", false),
    SMS_CAPTCHA_NULL(16007, "验证码：您的验证码已过期", false),
    SMS_CAPTCHA_ERROR(16008, "验证码：您输入的验证码错误", false),
    SMS_TYPE_NULL(16003, "验证码：您的验证模式不存在(0.注册绑定，1.登录验证，2.修改密码，3.换手机号)", false),

    /**
     * 优惠券返回同一定义
     */
    COUPON_PARAMS_ERROR(17000, "优惠券参数错误或不为空", false),
    COUPON_GET_FAIL(17001, "优惠券领取失败", false),
    COUPON_ENTITY_NULL(17002, "优惠券：优惠券信息不存在", false),
    COUPON_CREATE_FAIL(17003, "优惠券添加失败", false),
    COUPON_STORE_USER_ERROR(17004, "优惠券核销人信息不存在", false),
    COUPON_ORDER_NULL(17005, "优惠券领取不存在", false),
    COUPON_TIME_ERROR(17006, "优惠券核销：优惠券已经过期", false),
    COUPON_BATCH_ERROR(17006, "优惠券：优惠券批量添加失败", false),
    COUPON_GET_ERROR(17006, "优惠券：该优惠券已经被领取或过期", false),

    /**
     * 商铺返回同一定义
     */
    STORE_NULL(18000, "商铺：商铺信息为空", false),
    STORE_ID_NULL(18001, "商铺：商家id为空", false),
    STORE_COUPON_NULL(18002, "商铺：商铺下没有使用的优惠券", true),
    STORE_CREATE_FAIL(18003, "商铺：商铺创建失败", false),
    STORE_LATITUDE_NULL(18004, "商铺：数据库商铺经纬度不存在", false),
    STORE_TYPE_NULL(18005, "商铺类型：商铺类型没有找到", false),

    /**
     * 部门统一定义返回
     */
    STORE_DEPT_NULL(19000, "我的员工：未找到对应信息", false),
    STORE_DEPT_ADD_ERROR(19001, "部门管理：添加部门失败", false),
    USER_DEPT_UPDATE_FAIL(19002, "部门管理：更新部门失败", false),
    USER_DEPT_ID_NULL(19003, "部门管理：部门不存在", false),

    /**
     * 地区统一定义返回
     */
    REGION_HOT_NULL(20000, "地区管理：未找到热门城市", false),
    STORE_SELECT_FAIL(20001, "地区管理：查询地区出错", false),

    /**
     * 消息统一定义返回
     */
    SYS_MESSAGE_NULL(21000, "系统消息未找到信息", false),
    SYS_MESSAGE_ERROR(21001, "系统消息：消息错误", false),

    /**
     * 商家免密支付返回结果定义
     */
    WX_PAY_CONTRACT_ERROR(22000, "商家免密支付：商家签约失败", false),
    WX_PAY_CONTRACT_NULL(22001, "商家免密支付：商家没有签约", false),
    WX_PAY_MONEY_ERROR(22002, "商家免密支付：商家余额不足", false),
    WX_PAY_USER_BLOCKED(22003, "商家免密支付：用户不允许", false),
    WX_DO_PAY_FAIL(22004, "商家免密支付发起扣款失败", false),
    WX_PAY_USER_OVERDUE(22005, "商家免密支付：余额不足", false),

    /**
     * 优惠券核销返回结果定义
     */
    COUPON_ORDER_EDIT_USER_NOT_EXIST(23000, "优惠券核销：核销人信息不存在", false),
    COUPON_ORDER_EDIT_USER_STATUS_ERROR(23001, "优惠券核销：核销人处于冻结状态", false),
    COUPON_ORDER_EDIT_USER_STORE_ERROR(23002, "优惠券核销：核销人不属于当前店", false),
    COUPON_ORDER_EDIT_COUPON_NO_EXIST(23003, "优惠券核销：该优惠券不存在或结束时间不存在", false),
    COUPON_ORDER_EDIT_COUPON_END(23004, "待核销该优惠券已过期", false),
    COUPON_ORDER_EDIT_COUPON_STATUS_ERROR(23005, "优惠券核销：该优惠券不属于可用状态（未领取/已过期）", false),
    COUPON_ORDER_EDIT_COUPON_STORE_ERROR(23006, "优惠券核销：该优惠券不属于此店", false),
    COUPON_ORDER_EDIT_COUPON_USER_NULL(23007, "该用户未领取此券", false),
    COUPON_ORDER_EDIT_COUPON_ERROR(23007, "优惠券核销：核销失败", false),
    COUPON_ORDER_EDIT_COUPON_USE_NULL(23008, "优惠券核销：该优惠券没有领取记录", false),

    SUCCESS(1000, "api.response.code.success", false),
    FAIL(-1, "api.response.code.fail", false),

    // 公共参数
    PARAM_ERROR(1001, "api.response.code.paramError", false),
    LANGUAGE_TYPE_ERROR(1002, "api.response.code.languageTypeError", false),

    // 用户模块
    // 帐号
    ACCOUNT_NULL_ERROR(2001, "api.response.code.user.accountNullError", false),
    ACCOUNT_FORMAT_ERROR(2002, "api.response.code.user.accountFormatError", false),
    ACCOUNT_NOT_EXIST(2003, "api.response.code.user.accountNotExist", false),
    ACCOUNT_EXIST(2004, "api.response.code.user.accountExist", false),
    // 密码
    PASSWORD_NULL_ERROR(2101, "api.response.code.user.passwordNullError", false),
    PASSWORD_FORMAT_ERROR(2102, "api.response.code.user.passwordFormatError", false),
    PASSWORD_ERROR(2103, "api.response.code.user.passwordError", false),
    UNKNOWN_ERROR(-1000, "api.response.code.unknownError", false);

    /**
     * 返回错误码
     */
    public Integer code;
    /**
     * 错误信息
     */
    public String message;
    /**
     * 请求状态
     */
    public Boolean success;

    ReturnConstantEnum(int code, String message, boolean success) {
        this.code = code;
        this.message = message;
        this.success = success;
    }

    public static ReturnConstantEnum toEnum(String code) {
        if (StringUtils.isEmpty(code)) {
            return null;
        }
        for (ReturnConstantEnum item : ReturnConstantEnum.values()) {
            if (item.getCode().equals(code)) {
                return item;
            }
        }
        return null;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Boolean getSuccess() {
        return success;
    }

    public void setSuccess(Boolean success) {
        this.success = success;
    }
}
